// 引入接口
import { login, getProfile, getUserDetail } from '@/api/user'

const state = {
  userInfo: {},
  token: localStorage.getItem('token') || ''
}
const mutations = {
  setToken(state, token) {
    state.token = token
    // 存储token
    localStorage.setItem('token', token)
  },
  setUserInfo(state, userInfo) {
    state.userInfo = userInfo
  },
  removeToken(state) {
    // 由于 token 数据除了用在state还储存在 localStorage
    // 所以要一并清除
    state.token = ''
    localStorage.removeItem('token')
  },
  removeUserInfo(state) {
    state.userInfo = {}
  }
}
const actions = {
  // 这个登录actions调用时，应该传入用户填写的表单，手机号用户名
  // 校验
  async login(store, loginForm) {
    const res = await login(loginForm)
    // store.commit('setToken', res.data.data)
    store.commit('setToken', res)
    // 登录成功, 除了触发 token 记录以外, 还要注意记录时间
    // 方便下次发送请求时, 校验时间是否超时
    localStorage.setItem('timestamp', Date.now())
    // console.log('actions 正在调用')
  },
  async getUserInfo(store) {
    const res = await getProfile()
    // store.commit('setUserInfo', res)
    // 这里获取基本信息差用户头像, 可以用这个接口拿到的 id 数据
    // 继续获取后续接口, 拼接起来, 形成完整数据
    const detail = await getUserDetail(res.userId)
    store.commit('setUserInfo', {
      ...res, ...detail
      // staffPhoto: null
    })
  },
  logout(store) {
    store.commit('removeToken')
    store.commit('removeUserInfo')
  }

}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
